// - 1. 3 + 2 +"7"的结果是什么？3 + (2 + "7")的结果又是什么？这两个表达式输出的值是什么类型？数值相加与字符串拼接）
// 57 string
// 327 string
// - 2. 6 - false的结果是什么？（减法运算符）
// 6 number
// - 3. 6 - "false"和6 + "false"的结果分别是什么？结果输出值是什么数据类型？（减法运算符和加法运算符的不同）
// NaN number
// 6false string
// - 4.请分析console.log(1 + - + + + - + 1)的结果？（一元运算符的运行顺序）
// 2
// 原式可看做是 1 + -+(+(+-+1)) -+为- ++为 +
// - 5.下面代码分别输出什么？前自增(自减)与后自增(自减)的区别？（自增自减）
// let a = 1;
// let b = ++a + ++a;
// console.log(a);
// console.log(b);
// a = 3
// b = 5
// 前自增（自减）是先自增（自减）后取值
// 后自增（自减）是先取值后自增（自减）
// - 6.分析下面代码，请问 j 和 y 分别是多少？(不要运行代码，自己分析后写出答案)（自增自减）
// var i = 100;
// i++; i = 101
// j = i++; j = 101 后 i = 102
// y = ++j; j = 102 后 y = 102
// console.log(j)
// console.log(y)
// j = 102
// y = 102
// - 7.JS中哪些值通过Boolean对象转换出来的值为`false`?
// false、0、NaN、""、null、undefined

// - 8.分析下面代码的结果并解释原因。（短路运算）
// let a = 1;
// let b = 2;

// console.log(a && b);
// console.log(a || b);
// 2
// 1
// a&&b a为真（无逻辑中断） b(2)为真（取最后一个为真）
// a||b a为真（逻辑中断），直接返回 a 的结果 1
// - 9.以下代码输出的结果分别是什么？（短路运算）
// let a = true && "" && 12306;
// let b = false || "" || undefined || "bluej" || 12306;
// console.log(a);
// console.log(b);
// ""
//  "bluej"
// - 10.分析下面代码，分别输出什么？(以注释形式写在console.log后面)（== 和 ===）

// let str = "12306";
// let str1 = 1;
// let num = 12306;
// let boo = true;

// console.log(str == num);
// console.log(str === num);
// console.log(str1 == boo);
// console.log(str1 === boo);
// true
// false
// true
// false
// - 11.等于(==)与严格等于(===)的区别？
// == 是判断左右两个数据值是否相等
// === 是判断左右两个数据值和数据类型是否相等
// - 12.下面代码输出的分别是什么？除了typeof还有什么方法可以判断数据类型？（数据类型判断）

// let str = "bluej";
// let num = 12306;
// let boo = false;
// let arr = [];
// let obj = {};

// console.log(typeof str);
// console.log(typeof num);
// console.log(typeof boo);
// console.log(typeof arr);
// console.log(typeof obj);
// console.log(typeof undefined);
// console.log(typeof null);
// string
// number
// boolean
// object
// object
// undefined
// object
// 1.typeof
// 2.a constanceof b 判断a和b的数据类型书否相等
// 3.Object.prototype.toString.call(需要检测的数据)

// -------------以下题目为提高题,非必做-------------
// - 写出执行结果,并解释原因（typeof）
// var x=1;
// if(function f(){}){
//     x += typeof f;
// }
// console.log(x)
// 1undefined
// 在if的条件里面，function f(){}恒为真，则进入if的语句体内
// 在语句体内的f并没有被定义typeof f 输出结果为undefined ，但是typeof输出的类型为string
// 则x+=typeof 为x=1+"undefined" == 1undefined

// - 写出执行结果,并解释原因（typeof）
// var foo = {
//         bar: function(){
//             return this.baz;
//         },
//          baz:1
//     }
// console.log(typeof (f=foo.bar)());
// undefined
// foo 是一个对象，
// 里面包含着两个属性，一个属性为bar，值为function(){return this.baz;}
// 另一个属性为baz，值为1
// f = foo.bar 将foo.bar赋值给f然后f()调用，
// 由于在 f() 的执行上下文中，并没有指定明确的调用对象，所以this默认指向window
// window中没有baz值，则return了undefined ，typeof undefined的值为undefined
// - 写出执行结果,并解释原因
// const value  = 'Value is' + !!Number(['0']) ? 'yideng' : 'undefined';
// console.log(value);
// 'yideng'
// 'Value'+Number(['0']) 结果为 'Value0' ,条件为真，返回的结果为'yideng'
